package com.lai.gulimall.order.vo;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Data
public class OrderSettleVo {

    /**
     * 用户所有的收货地址
     */
    private List<MemberReceiveAddressVo> receiveAddress;

    /**
     * 订单  所选的所有购物项
     */
    private List<OrderItemVo> orderItem;
    /**
     * 优惠券信息
     */
    private Integer integration;

    /**
     *订单总额
     */
    private BigDecimal total;

    public BigDecimal getTotal(){
        //BigDecimal amount = new BigDecimal("0.00");
        //第一个参数是我们给出的初值，第二个参数是累加器，可以自己用实现接口完成想要的操作，这里使用Bigdecimal的add方法
        return orderItem!=null && orderItem.size() > 0 ? orderItem.stream().map(OrderItemVo::getTotalPrice).reduce(BigDecimal.ZERO,BigDecimal::add) : BigDecimal.ZERO;

        //1、计算购物项总价
        /*if(this.orderItem != null && this.orderItem.size() > 0){
            for (OrderItemVo item : orderItem) {
                    BigDecimal totalPrice = item.getTotalPrice();
                    amount = amount.add(totalPrice);
            }
        }
        return amount;*/
    }

    /**
     *应付价格
     */
    private BigDecimal payPrice;

    public BigDecimal getPayPrice(){
        return getTotal();
    }

    private Integer count;

    public Integer getCount(){
        return orderItem != null && orderItem.size() > 0 ? orderItem.stream().mapToInt(OrderItemVo::getCount).sum() : 0;
    }

    /**
     * 防重令牌
     */
    private String OrderToken;


    /**
     * Long（skuid）是否有库存
     */
    Map<Long,Boolean> stocks;
}
